Tanstack Query

❓질문

Tanstack Query를 사용하는 이유를 설명해 주세요.


💡 조사하기전 내가 알고 있던 내용

Tanstack Query는 서버 상태 관리의 복잡성을 해결하고 편리함을 제공해주는 라이브러리입니다.

첫번째로 캐싱 기능을 지원합니다 fresh한 데이터에 기준점을 세팅해놓으면 굳이 동일한 데이터를 반복적으로 호출하지않고 캐싱된 데이터를 활용합니다.
두번째로는 Promise 객체처럼 현재 어떤 상태인지 알려주는 기능이 있습니다. useQuery()useMutation()같은 훅을 사용하면 서버 데이터와 관련된 펜딩,성공,실패 상태를 제공해줍니다.
이는 단순하게
세번째로는 복잡한 관리성을 줄여줍니다 데이터 가져오기 , 다시 요청하기 , 무효화 등 작업에 관련된 메소드를 제공해주고 길게 늘어난 코드를 짧게 작성할수있으며 텐스택 쿼리에 대한 이해도만 있다면 훨씬 가독성이 좋아집니다.


🏫 정리한 내용

그렇다면 단점으로는 어떤것이 있을까요?

캐싱기능에 fresh한 데이터의 기준점을 세팅한다고 위에 설명했었는데 이는 staleTime(얼마동안 신선할지),gcTime(얼마동안 캐시를 들고있을지)같은 옵션을 이상하게 설정할시에는 데이터 갱신 타이밍이 적절하지 않아. 최신 데이터가 사용자에게 노출되지 않거나 불필요한 요청이 발생할 수 있습니다.

두번째로는 학습 곡선이 존재합니다 어떤 라이브러리던지 초기에 학습을 해야하는 불편함이 있는데 이는 쿼리키의 설계 , 데이터 무효화 전략 기존에 알던 데이터 호출방식과 많이 달라지고 많은 옵션덕에 초기에 학습해야하는 양이 많습니다

마지막으로 클라이언트 상태와 서버 상태간의 의존 관계가 복잡한 경우 텐스택 쿼리 만으로는 해결하기 어려울 수 있습니다. 이때는 Zustand, Redux등 별도의 상태 관리 라이브러리가 필요할 수 있습니다.